package cn.smbms.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.smbms.pojo.User;

public interface UserMapper {

	// 获取用户个数
	public int count(@Param(value = "userName") String userName);

	// 获取用户列表

	public List<User> getUserList();

	public User getUserById(Integer id);

	public int yanZhengOldPassword(@Param(value = "id") Integer id, @Param(value = "userPassword") String password);

	public int yanZhengUserCodeExists(@Param(value = "userCode") String userCode);

	// 根据用户名获取用户列表
	public List<User> getUserListByUserName(@Param(value = "userName") String userName,
			@Param("pageNo") Integer pageNo);

	// 用户登录
	public User login(@Param(value = "userCode") String userCode, @Param(value = "userPassword") String userPassword);

	// 根据用户名和用户类型查找用户列表 if子句测试
	public List<User> getUserListByUserNameAndUserType(Map<String, String> map);

	// 根据用户名和用户类型查找用户列表 where子句测试
	public List<User> getUserListByUserNameAndUserType2(Map<String, String> map);

	// 获取用户列表且利用别名获取角色名称
	public List<User> getUserListAndUserRoleName();

	// 获取用户列表且利用resultMap获取角色名称
	public List<User> getUserListAndUserRoleName2();

	// 增加用户
	public int add(User u);

	// 修改用户
	public int update(User u);

	// 修改用户，使用set标签
	public int update2(User u);

	// 修改用户，使用trim标签
	public int update3(User u);

	// 修改用户密码
	public int updatePwd(@Param("id") Integer id, @Param("userPassword") String userPassword);

	// 删除用户
	public int deleteUserById(Integer id);

	// 根据用户类型查找用户列表
	public List<User> getUserListByRoleId(Integer roleId);

	// 根据用户类型查找用户列表 association使用select属性
	public List<User> getUserListByRoleId2(Integer roleId);

	// 根据用户id查找用户列表
	public List<User> getAddressListByUserId(Integer userId);

	// 根据用户类型查找用户个数
	public int getUserCountByUserRole(Integer userRole);

	// 根据用户类型删除用户
	public int deleteUserByUserRole(Integer userRole);

	// 根据用户角色列表，获取该角色列表下用户列表信息,使用foreach_array
	public List<User> getUserByRoleId_foreach_array(@Param("roleIds") Integer[] roleIds);

	// 根据用户角色列表，获取该角色列表下用户列表信息,使用foreach_list
	public List<User> getUserByRoleId_foreach_list(List<Integer> roleList);

	// 根据用户角色列表，获取该角色列表下用户列表信息,使用foreach_list
	public List<User> getUserByConditionMap_foreach_map(Map<String, Object> conditionMap);

	// 查询角色列表，choose子句
	public List<User> getUserList_choose(@Param("userName") String userName, @Param("userRole") Integer roleId,
			@Param("userCode") String userCode, @Param("creationDate") Date creationDate);

	// 分页显示
	public List<User> getUserListFenye(@Param("from") Integer from, @Param("pageSize") Integer pageSize);
}
